
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently,
// but are changed infrequently

#pragma once

#ifndef _SECURE_ATL
#define _SECURE_ATL 1
#endif

#ifndef VC_EXTRALEAN
#define VC_EXTRALEAN            // Exclude rarely-used stuff from Windows headers
#endif

#include "targetver.h"

#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS      // some CString constructors will be explicit

// turns off MFC's hiding of some common and often safely ignored warning messages
#define _AFX_ALL_WARNINGS

#include <afxwin.h>         // MFC core and standard components
#include <afxext.h>         // MFC extensions


#include <afxdisp.h>        // MFC Automation classes



#ifndef _AFX_NO_OLE_SUPPORT
#include <afxdtctl.h>           // MFC support for Internet Explorer 4 Common Controls
#endif
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h>             // MFC support for Windows Common Controls
#endif // _AFX_NO_AFXCMN_SUPPORT

#include <afxcontrolbars.h>     // MFC support for ribbons and control bars


#ifndef _OpenGlInPut_
#define _OpenGlInPut_
#include "MyLib/include/GL/glut.h"
#include "MyLib/include/GL/glext.h"
#include "MyLib/include/SOIL.h"
#include "MyLib/include/GL/glaux.h"
#include "Cube.h"
#include "MagicCube.h"
#endif
#ifndef PI
#define PI 3.1415926536f
#endif
#include <math.h>
#include <list>
#include <queue>
#include <vector>
#include <stack>
#include <string>
#include <stdio.h>


#ifdef _UNICODE
#if defined _M_IX86
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_X64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#else
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif
#endif

#ifndef MagicCubeOper
#define MagicCubeOper
struct MagicCubeOperation
{
	MagicCubeOperation(GLfloat x,GLfloat y,GLfloat z,int index,int angel,int direction)
	{
		this->vx=x;
		this->vy=y;
		this->vz=z;
		this->index=index;
		this->angel=angel;
		this->add=(direction>0)?2:-2;
		this->operationFrom=0;
	}
	GLfloat vx;
	GLfloat vy;
	GLfloat vz;
	int index;
	int angel;
	int add;
	int operationFrom;
	//0 from handel
	//1 from random
	//2 from history record
};
extern class CMFC_OpenGlView;
typedef void (CMFC_OpenGlView::*DrawFunction)(GLfloat,GLfloat,GLfloat);
struct DrawFuncInfo
{
	
	DrawFuncInfo(CMFC_OpenGlView* ptr,DrawFunction function,GLfloat px,GLfloat py,GLfloat pz)
	{
		this->pClass=ptr;
		this->func=function;
		this->x=px;
		this->y=py;
		this->z=pz;
	}
	CMFC_OpenGlView *pClass;
	DrawFunction func;
	GLfloat x;
	GLfloat y;
	GLfloat z;
};
#endif


